package com.game.object;

import org.andengine.engine.camera.Camera;
import org.andengine.entity.sprite.Sprite;
import org.andengine.extension.physics.box2d.PhysicsWorld;
import org.andengine.opengl.texture.region.ITiledTextureRegion;
import org.andengine.opengl.vbo.VertexBufferObjectManager;

public abstract class Bala extends GameObject {

	private OnDieScreenListener onDieScreenListener; 

	public void setOnMuerteListener(OnDieScreenListener onDieScreenListener)
	{
		this.onDieScreenListener = onDieScreenListener;
	}
	
	public Bala(float pX, float pY, ITiledTextureRegion texture,
			VertexBufferObjectManager vbo, Camera camera,
			PhysicsWorld physicsWorld) {
		super(pX, pY, texture, vbo, camera, physicsWorld);
		// TODO Auto-generated constructor stub
	}
	
	public void dispararEjeX_Izquierda(float yPosicion)
	{
		getBody().setLinearVelocity(-10f, yPosicion);
	}
	
	public void dispararSprite(Sprite spr, float velX, float velY)
	{
		
		if(spr == null)
		{
			return;
		}
		float posX = getX();
		float posY = getY();
		
		//El objeto esta del lado derecho del sprite por lo tanto para dispararle tiene que ir en negativo 
		if(posX >= spr.getX())
		{
			if(posY <= spr.getY())
			{
				getBody().setLinearVelocity(-velX, velY);
			}
			else
			{
				getBody().setLinearVelocity(-velX, velY);
			}
		}
		//El objeto esta del lado izquierdo del sprite por lo tanto para dispararle tiene que ir en positivo
		else
		{
			if(posY <= spr.getY())
			{
				getBody().setLinearVelocity(velX, velY);
			}
			else
			{
				getBody().setLinearVelocity(velX, velY);
			}
		}
		
	}
	
	
	
	@Override
	public void murioEnPantalla()
	{
		if(this.getY() <= 0 || this.getX() <= 0 || this.getY() >= getCamera().getHeight() || this.getX() >= getCamera().getWidth())
		{
			if(onDieScreenListener != null)
			{
				onDieScreenListener.onDie(this);
			}
		}
		
	}


}
